package net.pimpas.report.processor.condition.factory;

import java.util.List;

import net.pimpas.report.processor.condition.Condition;
import net.pimpas.report.processor.condition.impl.AndCondition;
import net.pimpas.report.processor.condition.impl.BetweenCondition;
import net.pimpas.report.processor.condition.impl.EqualsCondition;
import net.pimpas.report.processor.condition.impl.GreaterThanCondition;
import net.pimpas.report.processor.condition.impl.ILikeCondition;
import net.pimpas.report.processor.condition.impl.InCondition;
import net.pimpas.report.processor.condition.impl.IsEmptyCondition;
import net.pimpas.report.processor.condition.impl.IsNotEmptyCondition;
import net.pimpas.report.processor.condition.impl.IsNotNullCondition;
import net.pimpas.report.processor.condition.impl.IsNullCondition;
import net.pimpas.report.processor.condition.impl.LessThanCondition;
import net.pimpas.report.processor.condition.impl.LikeCondition;
import net.pimpas.report.processor.condition.impl.NotBetweenCondition;
import net.pimpas.report.processor.condition.impl.NotEqualsCondition;
import net.pimpas.report.processor.condition.impl.NotGreaterThanCondition;
import net.pimpas.report.processor.condition.impl.NotILikeCondition;
import net.pimpas.report.processor.condition.impl.NotInCondition;
import net.pimpas.report.processor.condition.impl.NotLessThanCondition;
import net.pimpas.report.processor.condition.impl.NotLikeCondition;
import net.pimpas.report.processor.condition.impl.OrCondition;
import net.pimpas.report.processor.field.Field;

public abstract class ConditionFactory {
	
	public static AndCondition createAndCondition( Condition condition1, Condition condition2 ) {
		return new AndCondition(condition1, condition2);
	}
	
	public static OrCondition createOrCondition( Condition condition1, Condition condition2 ) {
		return new OrCondition(condition1, condition2);
	}
	
	public static BetweenCondition createBetweenCondition( Field field, Object value1, Object value2) {
		return new BetweenCondition(field, value1, value2);
	}
	
	public static EqualsCondition createEqualsCondition( Field field, Object value) {
		return new EqualsCondition(field, value);
	}
	
	public static GreaterThanCondition createGreaterThanCondition(Field field, Object value) {
		return new GreaterThanCondition(field, value);
	}
	
	public static ILikeCondition createILikeCondition(Field field, Object value) {
		return new ILikeCondition(field, value);
	}
	
	public static InCondition createInCondition(Field field, List<Object> values) {
		return new InCondition(field, values);
	}
	
	public static IsEmptyCondition createIsEmptyCondition(Field field) {
		return new IsEmptyCondition(field);
	}
	
	public static IsNotEmptyCondition createIsNotEmptyCondition(Field field) {
		return new IsNotEmptyCondition(field);
	}
	
	public static IsNotNullCondition createIsNotNullCondition(Field field) {
		return new IsNotNullCondition(field);
	}
	
	public static IsNullCondition createIsNullCondition(Field field) {
		return new IsNullCondition(field);
	}
	
	public static LessThanCondition createLessThanCondition(Field field, Object value) {
		return new LessThanCondition(field, value);
	}
	
	public static LikeCondition createLikeCondition(Field field, Object value) {
		return new LikeCondition(field, value);
	}
	
	public static NotBetweenCondition createNotBetweenCondition(Field field, Object value1, Object value2) {
		return new NotBetweenCondition(field, value1, value2);
	}
	
	public static NotEqualsCondition createNotEqualsCondition(Field field, Object value) {
		return new NotEqualsCondition(field, value);
	}
	
	public static NotGreaterThanCondition createNotGreaterThanCondition(Field field, Object value) {
		return new NotGreaterThanCondition(field, value);
	}
	
	public static NotILikeCondition createNotILikeCondition(Field field, Object value) {
		return new NotILikeCondition(field, value);
	}
	
	public static NotInCondition createNotInCondition(Field field, List<Object> values) {
		return new NotInCondition(field, values);
	}
	
	public static NotLessThanCondition createNotLessThanCondition(Field field, Object value) {
		return new NotLessThanCondition(field, value);
	}
	
	public static NotLikeCondition createNotLikeCondition(Field field, Object value) {
		return new NotLikeCondition(field, value);
	}
}